All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class com.sun.java.swing.text.GapContent

java.lang.Object
   |
   +----com.sun.java.swing.text.GapContent

public final class GapContent
extends Object
implements AbstractDocument. Content, Serializable
An implementation of the AbstractDocument.Content interface implemented using a gapped buffer similar to that used by emacs. The underlying storage is a array of unicode characters with a gap somewhere. The gap is moved to the location of changes to take advantage of common behavior where most changes are in the same location. Changes that occur at a gap boundry are generally cheap and moving the gap is generally cheaper than moving the array contents directly to accomodate the change.

The positions tracking change are also generally cheap to maintain. The Position implementations (marks) store the array index and can easily calculate the sequential position from the current gap location. Changes only require update to the the marks between the old and new gap boundries when the gap is moved, so generally updating the marks is pretty cheap. The marks are stored sorted so they can be located quickly with a binary search. This increases the cost of adding a mark, and decreases the cost of keeping the mark updated.


Constructor Index

 o GapContent()
Creates a new GapContent object.
 o GapContent(int)
Creates a new GapContent object, with the initial size specified.

Method Index

 o createPosition(int)
Creates a position within the content that will track change as the content is mutated.
 o getChars(int, int, Segment)
Retrieves a portion of the content.
 o getString(int, int)
Retrieves a portion of the content.
 o insertString(int, String)
Inserts a string into the content.
 o length()
Returns the length of the content.
 o remove(int, int)
Removes part of the content.

Constructors

 o GapContent
 public GapContent()
Creates a new GapContent object. Initial size defaults to 10.

 o GapContent
 public GapContent(int initialLength)
Creates a new GapContent object, with the initial size specified.

Parameters:
initialLength - the initial size

Methods

 o length
 public int length()
Returns the length of the content.

Returns:
the length >= 1
See Also:
length
 o insertString
 public UndoableEdit insertString(int where,
                                  String str) throws BadLocationException
Inserts a string into the content.

Parameters:
where - the starting position >= 0, < length()
str - the non-null string to insert
Returns:
an UndoableEdit object for undoing
Throws: BadLocationException
if the specified position is invalid
See Also:
insertString
 o remove
 public UndoableEdit remove(int where,
                            int nitems) throws BadLocationException
Removes part of the content.

Parameters:
where - the starting position >= 0, where + nitems < length()
nitems - the number of characters to remove >= 0
Returns:
an UndoableEdit object for undoing
Throws: BadLocationException
if the specified position is invalid
See Also:
remove
 o getString
 public String getString(int where,
                         int len) throws BadLocationException
Retrieves a portion of the content.

Parameters:
where - the starting position >= 0
len - the length to retrieve >= 0
Returns:
a string representing the content
Throws: BadLocationException
if the specified position is invalid
See Also:
getString
 o getChars
 public void getChars(int where,
                      int len,
                      Segment chars) throws BadLocationException
Retrieves a portion of the content. If the desired content spans the gap, we copy the content. If the desired content does not span the gap, the actual store is returned to avoid the copy since it is contiguous.

Parameters:
where - the starting position >= 0, where + len <= length()
len - the number of characters to retrieve >= 0
chars - the Segment object to return the characters in
Throws: BadLocationException
if the specified position is invalid
See Also:
getChars
 o createPosition
 public Position createPosition(int offset) throws BadLocationException
Creates a position within the content that will track change as the content is mutated.

Parameters:
offset - the offset to track >= 0
Returns:
the position
Throws: BadLocationException
if the specified position is invalid

All Packages  Class Hierarchy  This Package  Previous  Next  Index